/**
 * Created by Vector on 17/7/21.
 * 注意：查阅资料后得知，on()和addListener()是一样的。
 *      源代码Readable中提到：
 *      Readable.prototype.addListener = Readable.prototype.on;
 */

var events = require('events');
var eventEmitter = new events.EventEmitter();

// 监听器 #1
var listener1 = function listener() {
    console.log('监听器 listener1 执行。');
}

// 监听器 #2
var listener2 = function listener2() {
    console.log('监听器 listener2 执行。');
}

// 绑定 connection 事件，处理函数为 listener1
eventEmitter.on('connection',listener1);

// 绑定 connection 事件，处理函数为 listener2
eventEmitter.addListener('connection',listener2);

// 获取 connection 事件，有多少个监听器
var eventListenersCount = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log('connection事件共有' + eventListenersCount +'个监听器');


// 获取 connection 事件的监听器数组
// 注意: 要获取 connection 事件的监听器数组，必须是用之前的eventEmitter对象
var eventListenersArr = eventEmitter.listeners('connection');
console.log('connection事件的监听数组是:'+eventListenersArr);

// 触发 connection 事件
eventEmitter.emit('connection');

// 移除 connection 事件的监听器listener1
eventEmitter.removeListener('connection',listener1);
console.log('connection事件不再受listener1监听');


// 触发 connection 事件
eventEmitter.emit('connection');

// 获取 connection 事件，移除listener1之后还有有多少个监听器
var remainEventListenersCount = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log('connection事件共有' + remainEventListenersCount +'个监听器');

console.log('程序执行结束')
